package com.xhu.collegestudentrentalsystem.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

@Component        //表示它需要Spring容器管理，是一个通用的bean，在每个层次都可用
public class MailClient {  //发邮件功能
    //1声明一个logger，存放日志文件
    private static final Logger logger= LoggerFactory.getLogger(MailClient.class);

    //2发送邮件的核心组件为JavaMailSender，所以这里需要注入进来。这个核心组件也是Spring容器所管理的，直接注入就可以用了
    @Autowired(required = false)
    private JavaMailSender mailSender;

    //3发邮件的几个条件：发邮件的人、收邮件的人、邮件标题
    //发送方邮箱是固定的，所以直接注入，再封装一个公有的方法，能被外界调用
    @Value("${spring.mail.username}")
    private String from;
    public void sendMail(String to,String subject,String content){
        try {
            MimeMessage message=mailSender.createMimeMessage();   //这一句创建的对象是空的，只是一个模板，还需要添加内容
            MimeMessageHelper helper=new MimeMessageHelper(message);   //调用Spring中的帮助类，将message对象传给该类，Spring就会帮你构建message中的内容
            helper.setFrom(from);   //设置发送人
            helper.setTo(to);  //收件人
            helper.setSubject(subject);  //主题
            helper.setText(content);   //内容，不加html参数默认content为普通文本文件，设置为true表示支持html文本
            mailSender.send(helper.getMimeMessage());   //从helper中获取到邮件信息，然后发送出去
        } catch (MessagingException e) {
            logger.error("发送邮件失败："+e.getMessage());  //有异常就记录一个日志
        }
    }

}
